// 可行性01背包：给定 n 个物品（重量为 w[i]），判断是否存在一个子集，使得它们的总重量恰好等于 W。
#include<iostream>
#include<bitset>
using namespace std;

// 已知
int n, W;
int w;
// 未知
bitset<114514> dp;
int main()
{
    cin >> n >> W;
    dp[0] = 1;  // 容量0总是可达
    for (int i = 0; i < n; i++)
    {
        cin >> w;
        // dp << w：将 dp 中的每一位左移 w 位（相当于每个可达容量 j 变成 j + w）。
        // dp |= ...：将移位后的结果与原 dp 按位或（合并新可达状态）。
        dp |= dp << w;
    }
    if (dp[W])
    {
        cout << "Yes" << endl;
    }
    else
    {
        cout << "No" << endl;
    }

    return 0;
}